﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////

// Reviewed

#pragma once

#include "GcmpGeometryInterface.h"
#include "SurfaceSurfaceIntersectTypes.h"



namespace gcmp
{
    class ICurve3d;
    class ICurve2d;
    class Vector3d;

    /// \brief 曲面与曲面的相交数据
    ///
    class GCMP_GEOMETRY_INTERFACE_EXPORT ISurfaceSurfaceIntersection
    {
    public:        
        /// \brief  获取相交的类型
        ///
        /// \return 相交的类型
        virtual SurfaceSurfaceIntersectType GetIntersectType() const = 0;

        /// \brief  获取交线
        ///
        /// \return 交线
        virtual const ICurve3d* GetIntersectCurve() const = 0;

        /// \brief  获取交线在曲面上的参数曲线
        ///
        /// \return 交线
        virtual const std::vector<const ICurve2d*> GetIntersectParameterCurves() const = 0;

        /// \brief  获取交点
        ///
        /// \return 交点
        virtual Vector3d GetIntersectPoint() const = 0;
    };
}

